1. Field of the Invention
This invention relates to remote peripheral device access, and in particular, it relates to a method and apparatus for accessing remote peripheral devices that use different communication protocols.
2. Description of the Related Art
FIG. 1A illustrates a conventional configuration of a server that provides remote USB (Universal Serial Bus), SATA (Serial Advanced Technology Attachment) and IDE (Integrated Drive Electronics) access capabilities. Remote USB (or SATA, IDE) access is a technology that allows a USB (or SATA, IDE) device connected to a USB (or SATA, IDE) port of a remote host (e.g., a client of the server) to be accessed by a local host (e.g., the server) that is connected to the remote host by a network. The USB (or SATA, IDE) device on the client will appear to the server as if it is physically located on the server itself (referred to as virtual devices). In the system shown in FIG. 1A, the server 10 includes a USB controller 11 connected to a USB connector 11a, a SATA controller 12 connected to a SATA connector 12a, an IDE controller 13 connected to an IDE connector 13a, and a bridge 14 connected to the USB controller 11, the SATA controller 12 and the IDE controller 13. The USB, SATA and IDE connectors 11a, 12a and 13a are for receiving external USB, SATA and IDE devices, respectively (these devices are referred to as local devices as they are directly connected to the server). The USB, SATA and IDE controllers 11, 12 and 13 implement the respective control functions for controlling and communicating with these external devices using the respective communication protocols, and also have hub or switch functions for supporting multiple peripheral devices. The bridge 14 connects the USB, SATA and IDE controllers 11, 12 and 13 to other parts of the server 10, such as host controllers (USB host controllers, etc.), CPU, memory, etc. The bridge 14 communicates with these device controllers 11, 12 and 13 using the respective communication protocols (USB, SATA and IDE), and transmits the data to and from the rest of the server for usage.
The remote USB, SATA and IDE access functions of the server 10 are performed by a controller, in this example, the IPMI section 15 (e.g. an IPMI card) of the server. IPMI (Intelligent Platform Management Interface) is a technology that allows the monitoring of server hardware health related factors including CPU temperature, voltage, fan speed, etc. The IPMI specification defines a set of common interfaces to computer hardware and firmware which system administrators can use to monitor system health and manage the system. IPMI operates independently of the server's operating system, and runs on a dedicated controller called the BMC (Baseboard Management Controller) and other satellite controllers. The IPMI system communicates with a remote management console using messages transferred between the BMC and the remote management console over a network such as an Ethernet LAN or other network. In the server 10 shown in FIG. 1A, the remote USB, SATA and IDE access functions are implemented in the IPMI section 15, utilizing the existing BMC and network access of the IPMI.
The structure of the IPMI section 15 is shown in FIG. 1B. It includes a BMC 154 for performing the normal IPMI functions as well as the remote peripheral device access functions, and a NIC (network interface controller, alternatively referred to as network interface circuit, network interface card or network interface chip) 155 for interfacing the BMC 154 with the network. The IPMI section 15 is provided with a USB chip 151, a SATA chip 152, and an IDE chip 153 for interfacing the BMC 154 with the USB, SATA and IDE controllers 11, 12 and 13, respectively. The BMC 154 executes driver functions for the USB, SATA and IDE chips 151, 152 and 153. The BMC 154 packetizes the data from the USB, SATA, and IDE chips 151, 152 and 153, such as by adding network headers, etc., and transmits them to the network via the NIC 155 to be sent to the client. The BMC also un-packetizes the network packets received from the network via the NIC 155 and passes them to the USB chip 151, SATA chip 152, and IDE chip 153. The USB controller 11 (or the SATA controller 12, or the IDE controller 13) acts as a hub or switch for the virtual (remote) USB (or SATA, or IDE) device. Data flows between the remote device on the client and the host controller of the server (USB host controller, SATA host controller, or IDE host controller) via the bridge 14, the USB controller chip 11 (or the SATA controller chip 12, or the IDE controller chip 13), the USB chip 151 (or the DATA chip 152, or the IDE chip 153), the BMC 154, the NIC 155, and the network.
Because the IPMI section 15 needs to communicate with the USB, SATA and IDE controllers 11, 12 and 13, the IPMI section must be provided with the ability to communicate using the respective communication protocols, which is provided by the USB, SATA, and IDE chips 151, 152 and 153 in this example. This complicates the structure of the IPMI section 15.